Nuxt.js 環境ごとにAPIのHOSTを変更する
Nuxt.js 環境ごとにAPIのHOSTを変更する
cross-envのインスト
cross-envをインストして、環境ごとに環境変数をわけられるようにします。
npm install --save cross-env
envファイルを作成する
アプリケーション直下に環境ごとにenvファイルを作成します。
env.development.js
env.production.js
env.staging.js
env.production.js
env.staging.js
各環境に合わせて、APIのURIを設定します。下記はローカル開発環境用として、ステージング、本番用にそれぞれAPIのURIを設定しておきあmス
module.exports = {
apiBaseUrl: 'http://localhost:3000'
}
package.json
"scripts": { "dev": "nuxt", "build": "nuxt build", //追加 "build:stg": "cross-env NODE_ENV=\"staging\" nuxt build", //追加 "build:prod": "cross-env NODE_ENV=\"production\" nuxt build", "start": "nuxt start", //追加 "start:stg": "cross-env NODE_ENV=\"staging\" nuxt start", //追加 "start:prod": "cross-env NODE_ENV=\"production\" nuxt start", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint", "heroku-postbuild": "npm run build" }, ...
nuxt.config
envの設定をnuxt.configに追加します
const pkg = require('./package') //追加 const environment = process.env.NODE_ENV || 'development'; //追加 const envSet = require(`./env.${environment}.js`) module.exports = { //追加 env: envSet, mode: 'universal',
axios
環境変数はprocess.env.変数名
で呼び出すことができます。
var qs = require('qs'); import axios from 'axios' class ApplyApi { constructor() { this.apiBase = process.env.apiBaseUrl; } apply(data) { axios.post(`${this.apiBase}/recruit_apply.json`, { ... }, { headers: { 'Content-Type': 'application/json' } }) } } const applyApi = new ApplyApi(); export default applyApi;